COLECOVISION TOOLCHAIN DASHBOARD · OCTOBER 2026
Different tools, different priorities.
Measured evidence for eight ColecoVision toolchains and a pure-ASM baseline.
The tests use size-oriented native settings validated for these fixtures. Occupied size excludes cartridge padding. Smaller does not automatically mean faster or better.
REPRODUCIBLE EVIDENCE
Six samples, eight toolchains plus an ASM baseline.
| Occupied ROM bytes | Pure ASM* | Amy Studio | NewColeco | PkK's devkit | PVColLib | devkitSMS | CVBasic | z88dk | ugBASIC |
|---|---|---|---|---|---|---|---|---|---|
| Hello World | 184 | 227 | 795 | 1,001 | 1,106 | 1,401 | 1,466 | 1,980 | 1,420 |
| Warrior bitmap | 3,066 | 3,214 | 3,643 | 4,691 | 4,525 | 4,680 | 4,948 | 4,976 | 9,733 |
| Controller monitor | 264 | 604 | 932 | 812 | 1,194 | 1,403 | 1,695 | 2,272 | 2,025 |
| Sprite metasprite | 343 | 939 | 1,142 | 1,413 | 1,304 | 1,654 | 1,845 | 2,492 | 5,797 |
| Gameplay state update* | 508 | 1,152 | 1,253 | 1,291 | 1,308 | 2,099 | 2,453 | 2,712 | 4,013 |
| Tile animation | 761 | 1,255 | 1,376 | 1,627 | 1,530 | 1,838 | 2,982 | 2,729 | 2,091 |
| Six-sample total* | 5,126 | 7,391 | 9,141 | 10,835 | 10,967 | 13,075 | 15,389 | 17,161 | 25,079 |
* Pure ASM is a diagnostic lower-level baseline, not a ninth high-level toolchain. State Update is behavior-validated but not yet a strict display-equivalent size ranking.
Measured revisions: Amy Studio 02596a3f (2026-10-20); CVBasic 0.9.2 e99aede0 (2026-07-24); z88dk nightly 26587-33d4c333ea-20261020 with zsdcc 4.6; ugBASIC e35e6df (2026-10-10); devkitSMS 533ae572 (2026-09-29) with SDCC 4.5; PVColLib 1.6.0 f9335847 (2026-05-31); NewColeco's historical GETPUT 1.1 snapshot with SDCC 2.9.0 #5416 (March 2009); and PkK libcv 0.28/libcvu 0.21 (2021-10-01) rebuilt with SDCC 4.5. The refreshed z88dk suite saves 15 bytes overall. devkitSMS adds 12 bytes overall to include its corrected ColecoVision VDP acknowledgement, IRQ/NMI vector protection, and bounded RAM clearing.
BIOS-ASSISTED PURE Z80 ASSEMBLY
A measured lower-level baseline for all six samples.
Matching hand-written ASM implementations pass every GearColeco oracle using Amy Studio’s permitted assets, codecs, BIOS services, and behavior. Their six ROMs occupy 5,126 bytes versus Amy Studio’s 7,391, exposing concrete optimization targets. Amy remains safe by default while explicit, bounded NMI/VRAM batches avoid redundant protection in expert code.
| Sample | Pure ASM | Amy Studio | ASM difference |
|---|---|---|---|
| Hello World | 184 | 227 | -43 |
| Warrior bitmap | 3,066 | 3,214 | -148 |
| Controller Visual | 264 | 604 | -340 |
| Sprite Metasprite | 343 | 939 | -596 |
| Gameplay State Update* | 508 | 1,152 | -644 |
| Tile Animation | 761 | 1,255 | -494 |
| Six-sample total | 5,126 | 7,391 | -2,265 |
The controller ROM fell from 297 to 264 bytes by replacing CONT_SCAN, cartridge decoding, and a keypad table with two BIOS DECODER calls. It passes neutral, keypad, held-direction, FIRE, and release tests. POLLER remains useful for two-sample debounce, but its 12-byte result and 83-91 executed instructions cannot beat one 29-instruction DECODER segment here.
The ASM result is a diagnostic baseline, not evidence that assembly is universally preferable. The State Update ASM fixture validates the complete headless workload but does not reproduce Amy Studio's additional status display.
SPECIALIZED GRAPHICS EXPERIMENTS
Useful evidence, outside the main ranking.
The ZIP also contains an eight-tool PutPixel Motion fixture derived from sverx’s SGlib_CV example; seven pass motion, two-controller, and Name Table checks. All nine principal controller ROMs pass, including Pure ASM and ugBASIC. A source-only pixel, line, and circle study based on Oscar Toledo’s CVBasic example remains unranked work in progress.
AMY SOURCE + GEARCOLECO
All six benchmark cases.
Hello World
text screen
backdrop sky blue
print centered at 11, "HELLO, WORLD!"
screen on

Warrior bitmap
picture WarriorPicture:
pattern from "@project/warrior.pattern.zx0" codec zx0
color from "@project/warrior.color.zx0" codec zx0
end picture
show picture WarriorPicture
Exomizer proof: the evidence archive contains this equivalent Amy source, both .exo assets, and the exact 3,319-byte ROM for direct testing.
picture WarriorExomizer:
pattern from "@project/warrior.pattern.exo" codec exomizer
color from "@project/warrior.color.exo" codec exomizer
end picture
show picture WarriorExomizer
Controller monitor
InputLoop:
wait
if keypad(1) <> 255 then
backdrop magenta
elseif joypad(1).fire then
backdrop light red
elseif joypad(1).up then
backdrop light green
else
backdrop dark blue
end if
goto InputLoop

Animated three-color metasprite
A metasprite is one visual actor assembled from multiple hardware sprites. This example overlaps three 16x16 sprites for white, yellow, and black layers.
u8 PlayerX = 120
u8 PlayerY = 88
u8 AnimationFrame = 0
sprites simple
set sprite count 3
MainLoop:
wait
if joypad(1).left then PlayerX -= 1
if joypad(1).right then PlayerX += 1
AnimationFrame = 1 - AnimationFrame
set sprite 0 to PlayerY,PlayerX,0,15
set sprite 1 to PlayerY,PlayerX,4,11
set sprite 2 to PlayerY,PlayerX,8,1
update sprites
goto MainLoop

Gameplay state update
This deterministic six-actor workload measures state dispatch, record-array updates, timers, movement, collisions, score, and checksum rather than rendering speed.
state machine WorldBehavior:
Running calls UpdateActors
Bonus calls UpdateBonus
end state machine
ActorState Actors[6]
u16 Score = 0
u16 Checksum = 0
for Tick = 0 to 47
dispatch WorldMode using WorldBehavior
' UpdateActors handles records, timers, movement and collisions.
next

Graphics II tile animation
One shared pattern animates every star while six stationary 3x2 ships alternate tile frames through Name Table updates.
AnimationLoop:
wait
Tick += 1
if Tick & 3 = 0 then
StarFrame = (StarFrame + 1) % 3
copy StarPatterns[StarFrame * 8] count 8 to vram.pattern + StarTile * 8
end if
if Tick & 7 = 0 then
ShipFrame = 1 - ShipFrame
for Ship = 0 to 5
put ShipTiles[ShipFrame * 6] frame size 3,2 at ShipX[Ship],ShipY[Ship]
next
end if
goto AnimationLoop

GRAPHICS II COMPRESSION CORPUS
42 pictures, 16 codecs, 672 exact checks.
Every 12,288-byte Pattern + Color picture round-tripped exactly. Podiums rank first-use ROM bytes: payload plus one linked decoder. Gallery cards show the three smallest payloads and Pletter's rank when it is outside the top three.
| Rank | Codec | Payload total | Decoder | First-use places (pictures) | ||||
|---|---|---|---|---|---|---|---|---|
| 1st | 2nd | 3rd | 4th | 5th | ||||
| 1 | Exomizer 2 | 161,374 | 226 | 21 | 12 | 2 | 3 | 1 |
| 2 | ZX0 | 166,556 | 136 | 21 | 18 | 1 | 2 | 0 |
| 3 | DAN2 | 166,923 | 212 | 0 | 0 | 7 | 13 | 10 |
| 4 | DAN3 | 167,186 | 205 | 0 | 0 | 16 | 5 | 11 |
| 5 | DAN1 | 167,240 | 205 | 0 | 3 | 4 | 9 | 16 |
| 6 | MegaLZ | 171,016 | 162 | 0 | 0 | 1 | 1 | 1 |
| 7 | aPLib Compact | 171,484 | 244 | 0 | 0 | 0 | 0 | 0 |
| 8 | Pletter | 171,751 | 212 | 0 | 0 | 0 | 0 | 0 |
| 9 | ZX7 | 171,788 | 136 | 0 | 0 | 2 | 9 | 3 |
| 10 | BitBuster | 172,941 | 166 | 0 | 0 | 0 | 0 | 0 |
| 11 | ZX1 | 176,562 | 127 | 0 | 4 | 5 | 0 | 0 |
| 12 | ZX2 | 177,582 | 115 | 0 | 5 | 4 | 0 | 0 |
| 13 | LZF | 193,412 | 117 | 0 | 0 | 0 | 0 | 0 |
| 14 | Nibble | 214,555 | 115 | 0 | 0 | 0 | 0 | 0 |
| 15 | MDK-RLE | 253,859 | 46 | 0 | 0 | 0 | 0 | 0 |
| 16 | MSC1 | 259,023 | 68 | 0 | 0 | 0 | 0 | 0 |
Most, median, and least compressible

ROM File Edition
1. ZX0: 901 bytes
2. Exomizer 2: 904 bytes
3. DAN2: 909 bytes
... 9. Pletter: 960 bytes

Cake
1. Exomizer 2: 2,935 bytes
2. ZX0: 2,958 bytes
3. DAN2: 2,999 bytes
... 9. Pletter: 3,108 bytes

Mona Lisa
1. Exomizer 2: 9,208 bytes
2. ZX0: 9,426 bytes
3. DAN3: 9,490 bytes
... 5. Pletter: 9,640 bytes
Selection is mechanical. Exomizer uses a 226-byte ROM decoder plus 156 bytes of CPU RAM. Amy Studio reserves that workspace at a 256-byte boundary; its generated address varies and must not overlap other RAM. The detailed PDF contains all 42 converted images and per-picture evidence.
AMY'S LEGACY
The compact philosophy predates Amy Studio.
NewColeco links Amy's historical CRTCV, CVLIB, GETPUT 1.1, and DAN2 code without ABI changes. Its Hello, bitmap, and controller ROMs remain small and run correctly today. The exact Warrior test confirms its direct-to-VRAM DAN2 path. Amy Studio continues that BIOS-aware, original-hardware approach with a modern language, integrated tools, and debugging.
January 2018 devkit archive · AtariAge 2018 update · AtariAge history
PVCOLLIB EVIDENCE
A broad ColecoVision C library, not only a ROM-size entry.
| Area | Verified local API or example | Status |
|---|---|---|
| Graphics | Text and bitmap modes, direct VRAM, sprites, hitbox collisions | Source verified; bitmap runtime exact |
| Sprite pressure | 32-entry SAT and NMI sprite swapping for the four-per-line limit | Source verified |
| Controllers | Both joypads, keypads, four fire buttons, and both spinners | Source verified; visual ROM boots |
| Sound | BIOS-style sound tables, sequenced music, concurrent SFX areas | Source and examples verified |
| Compression | RLE, Pletter, DAN1, DAN2, and DAN3 direct-to-VRAM APIs | RLE exact; other stream pairings not ranked yet |
| Expanded hardware | MegaCart, SGM, Phoenix, and F18A support | Credited separately from stock tests |
PKK'S DEVKIT EVIDENCE
Small linked C code, with a specialized bitmap codec.
Philipp Klaus Krause's devkit uses libcv/libcvu, completes all six runtime fixtures, and has the third-smallest total in this suite at 10,835 occupied bytes. Its Warrior RLE+Huffman path is exact, but needs a 2,934-byte payload, 514-byte shared tree/configuration, about 411 decoder bytes, and 19 bytes of runtime RAM. In the separate 42-picture study, which also includes RAW and libcv's native method, it usually ranks 14th or 15th among 17 methods. That result informs shared-codebook research; it is not a general verdict on PkK's devkit.
Stock and expanded hardware
The measured ranking targets an original ColecoVision with its TMS9918A, SN76489, 1 KB RAM, BIOS, and compact cartridge. Expanded hardware remains a valid strength, but is reported separately.
| Extension | Examples of support | Comparison scope |
|---|---|---|
| MegaCart / banking | Amy Studio editable 64 KB–1 MB projects; CVBasic, z88dk, devkitSMS, and PVColLib banking paths | Valid, excluded from stock-ROM ranking |
| F18A video | PVColLib APIs; Amy debugger emulation through GearColeco 1.7.0 | Amy language APIs remain future work |
| SGM sound and RAM | Amy project profiles and AY commands; CVBasic and PVColLib paths | Expansion or compatible clone systems |
| SP0256 voice modules | Amy Lundy/EVE commands and debugger emulation | Optional external hardware |
| Coleco ADAM | Amy native EOS and OS7+EOS hybrid projects, DSK/DDP packaging, writable media, keyboard, ADAMnet, serial, and modem support | Runtime-tested; larger EOS memory models and optional-EOS cartridges remain future architecture |
| Extra RAM | SGM, ADAM, and compatible clones | Reported separately from stock 1 KB RAM |
Philosophy
| Area | Amy Studio | CVBasic | z88dk +coleco |
|---|---|---|---|
| Primary goal | Integrated ColecoVision game authoring | Portable BASIC game development | General-purpose Z80 C development |
| Target reach | ColecoVision-first | Multiple classic consoles and computers | Large family of Z80 targets |
| Typical workflow | Browser IDE, editable multi-file projects, incremental target builds, asset editors, debugger, and runtime tests | Compiler plus editor and emulator | CLI toolchain plus editor and emulator |
| Hardware philosophy | Stock ColecoVision first, with explicit MegaCart, SGM, native EOS, and OS7+EOS targets | Portable abstractions with platform extensions | Low-level C control and broad libraries |
Language and game systems
| Capability | Amy Studio | CVBasic | z88dk +coleco |
|---|---|---|---|
| Numeric types | Explicit 8/16/32-bit integers, fixed-point, FP5, packed BCD | Game-oriented 8/16-bit integers | C integer families and software floating point |
| Data structures | 1D/2D arrays, records, record arrays, RAM overlays | Arrays and BASIC data constructs | C arrays, structs, unions, and pointers |
| Functions | Typed parameters, returns, ref parameters, recursion | Procedures and BASIC function facilities | Full C functions and calling conventions |
| State management | Typed state machines, scenes, overlay-aware RAM | Conventional BASIC control flow | C control flow and manual architecture |
| Input | Joypad, keypad, spinner, pressed/released edges, controller-aware lowering | Joypad, keypad, spinner | C input APIs; advanced behavior is generally manual |
| Sprites | High-level sprites, collision helpers, opt-in flicker with stable ranges | High-level sprites and flicker support | TMS9918 sprite APIs and manual game logic |
| Sound and voice | BIOS tables, Tiny Sound, DSound, adaptive VoxPCM, and SP0256 Lundy/EVE modules | Sound and integrated music commands | PSG libraries and external conversion workflows |
Production workflow
| Capability | Amy Studio | CVBasic | z88dk +coleco |
|---|---|---|---|
| Integrated browser IDE | Editable multi-file projects, FILES tree, Amy/ASM/JSON editors, assets, compiler, and debugger | No official integrated IDE | No official integrated IDE |
| Build workflow | Target-aware incremental builds with dependency tracking and MODIFIED, STALE, COMPILED, and FAILED states | Compiler-driven builds | CLI and build-system driven |
| Source debugging | GearColeco 1.7.0, source/Z80 stepping, breakpoints, bank-aware symbols, memory/VRAM, rewind, and cycle profiling | External emulator workflow | External emulator/debugger workflow |
| Media and hardware setup | ROM/COL/DSK/DDP drag-and-drop, Coleco/ADAM firmware, controller profiles, voice modules, SGM/AY, and ADAM peripherals | External emulator workflow | External emulator/debugger workflow |
| Runtime testing and capture | Checkpoints, scripted inputs, route replay after recompilation, record-from-boot, AVI, and animated GIF export | Project-specific external setup | Project-specific external setup |
| Graphics workflow | Configurable bitmap, tile, sprite, frame, tilemap, and TMS9918 composite editors | External/companion conversion tools | External tools and custom pipelines |
| Compression | Sixteen integrated direct-to-VRAM codecs, including Exomizer 2 and MSC1 | Pletter-centered workflow | ZX-family tools and C/ASM libraries |
| Expanded project outputs | 64 KB–1 MB MegaCart ROMs plus native EOS and OS7+EOS DSK/DDP media | MegaCart and SGM support | Banked/MegaCart toolchain options |
AMY STUDIO FITS WHEN
You want depth on the ColecoVision.
You value original-hardware constraints, integrated graphics and compression, readable game-oriented syntax, explicit RAM accounting, source debugging, and an environment shaped by decades of ColecoVision practice.
Open Amy StudioOTHER TOOLCHAINS FIT WHEN
Your project values their strengths.
CVBasic supports portable game-oriented BASIC. z88dk provides broad C and Z80 tooling. ugBASIC offers extensive cross-platform BASIC features. devkitSMS, PVColLib, and PkK's devkit provide established SDCC library workflows.
CVBasic · z88dk · ugBASIC · devkitSMS · PVColLib · PkK's devkit · NewColeco